#!/bin/bash
JAVA_OPTS="-Xms512m -Xmx512m"
JAR_NAME="api-1.0-SNAPSHOT.jar"
LOG_FILE="/app/scc/logs/spring.log"

#使用说明，用来提示输入参数
usage() {
	echo "Usage: sh 执行脚本.sh [[start|stop|restart|status]]"
	exit 1
}


# 检查程序是否在运行
is_exist() {
	pid=$(ps -ef | grep ${JAR_NAME} | grep -v grep | awk '{print $2}')
	#如果不存在返回1，存在返回0
	if [[ -z "${pid}" ]]; then
		return 1
	else
		return 0
	fi
}

# 启动方法
start() {
	is_exist
	if [[ $? -eq "0" ]]; then
		echo ">>> ${JAR_NAME} is already running <<<"
	else
		echo "nohup java ${JAVA_OPTS} -jar ${JAR_NAME} 2>&1 > /dev/null &"
		nohup java ${JAVA_OPTS} -jar ${JAR_NAME} 2>&1 > /dev/null &
		echo -n "doing: "
		is_exist
		for i in {1..30}; do
			start_log=$(grep ${pid} $LOG_FILE | grep "Tomcat started on port" | wc -l)
			if [[ ${start_log} == 1 ]]; then
				echo ""
				echo ">>> start ${JAR_NAME} successed <<<"
				return
			else
				echo -n "."
				sleep 1
			fi
		done
		echo ""
		echo ">>> start ${JAR_NAME} timeout, get detail in $LOG_FILE <<<"
	fi
}


# 停止方法
stop() {
	is_exist
	if [[ ! ${pid} -gt 0 ]]; then
		echo ">>> ${JAR_NAME} is not running <<<"
		return
	fi
	echo ">>> begin to kill process at ${pid} <<<"
	kill -15 ${pid}
	sleep 2
	is_exist
	if [[ $? -eq "0" ]]; then
		echo ">>> use kill -15 failed, begin kill -9 ${pid} <<<"
		kill -9 ${pid}
		sleep 2
		echo ">>> ${JAR_NAME} process stopped: kill -9 <<<"
	else
		echo ">>> ${JAR_NAME} process stopped: kill -15 <<<"
	fi
}


# 输出运行状态
status() {
	is_exist
	if [[ $? -eq "0" ]]; then
		echo ">>> ${JAR_NAME} is running at ${pid} <<<"
		echo $(ps -ef | grep ${JAR_NAME} | grep -v grep)
	else
		echo ">>> ${JAR_NAME} is not running <<<"
	fi
}


# 重启
restart() {
	stop
	start
}


# 根据输入参数，选择执行对应方法，不输入则执行使用说明
case "$1" in
"start")
	start
	;;
"stop")
	stop
	;;
"status")
	status
	;;
"restart")
	restart
	;;
*)
	usage
	;;
esac
exit 0
